import { AppEnv, EnvConfig } from '@/types/env';

/**
 * 获取当前环境
 */
export const getCurrentEnv = (): AppEnv => {
  return (import.meta.env.VITE_APP_ENV as AppEnv) || 'development';
};

/**
 * 检查是否为指定环境
 */
export const isEnv = (env: AppEnv): boolean => {
  return getCurrentEnv() === env;
};

/**
 * 检查是否为开发环境
 */
export const isDevelopment = (): boolean => {
  return isEnv('development');
};

/**
 * 检查是否为测试环境
 */
export const isTest = (): boolean => {
  return isEnv('test');
};

/**
 * 检查是否为预发布环境
 */
export const isPre = (): boolean => {
  return isEnv('pre');
};

/**
 * 检查是否为生产环境
 */
export const isProduction = (): boolean => {
  return isEnv('production');
};

/**
 * 获取环境配置
 */
export const getEnvConfig = (): EnvConfig => {
  const env = getCurrentEnv();
  
  return {
    env,
    isDevelopment: isDevelopment(),
    isTest: isTest(),
    isPre: isPre(),
    isProduction: isProduction(),
    apiBaseUrl: import.meta.env.VITE_API_BASE_URL || 'http://localhost:3001/api',
    apiTimeout: Number(import.meta.env.VITE_API_TIMEOUT) || 10000,
    appTitle: import.meta.env.VITE_APP_TITLE || 'React 18 CLI 2025',
    appVersion: import.meta.env.VITE_APP_VERSION || '1.0.0',
    debug: import.meta.env.VITE_APP_DEBUG === 'true',
    logLevel: (import.meta.env.VITE_APP_LOG_LEVEL as 'debug' | 'info' | 'warn' | 'error') || 'info',
    features: {
      analytics: import.meta.env.VITE_FEATURE_ANALYTICS === 'true',
      mockApi: import.meta.env.VITE_FEATURE_MOCK_API === 'true',
      devtools: import.meta.env.VITE_FEATURE_DEVTOOLS === 'true',
    },
    services: {
      googleAnalyticsId: import.meta.env.VITE_GOOGLE_ANALYTICS_ID || '',
      sentryDsn: import.meta.env.VITE_SENTRY_DSN || '',
    },
  };
};

/**
 * 获取API基础URL
 */
export const getApiBaseUrl = (): string => {
  return getEnvConfig().apiBaseUrl;
};

/**
 * 获取API超时时间
 */
export const getApiTimeout = (): number => {
  return getEnvConfig().apiTimeout;
};

/**
 * 检查功能是否启用
 */
export const isFeatureEnabled = (feature: keyof EnvConfig['features']): boolean => {
  return getEnvConfig().features[feature];
};

/**
 * 获取日志级别
 */
export const getLogLevel = (): 'debug' | 'info' | 'warn' | 'error' => {
  return getEnvConfig().logLevel;
};

/**
 * 打印环境信息（仅在开发环境）
 */
export const logEnvInfo = (): void => {
  if (isDevelopment()) {
    // const config = getEnvConfig();
    // console.log('🚀 环境信息:', {
    //   环境: config.env,
    //   标题: config.appTitle,
    //   版本: config.appVersion,
    //   API地址: config.apiBaseUrl,
    //   调试模式: config.debug,
    //   日志级别: config.logLevel,
    //   功能开关: config.features,
    // });
  }
};
